# -*- coding: utf-8 -*-
"""
阿里云百炼大模型 qwen3-coder 集成模块
用于红楼梦数据分析网站的智能问答和文本生成功能
"""

import requests
import json
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

class QwenAPI:
    def __init__(self):
        """
        初始化阿里云百炼大模型API
        需要在环境变量中配置API_KEY
        """
        self.api_key = os.getenv('ALIYUN_API_KEY')
        self.endpoint = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation"
        self.model = "qwen3-coder"

    def generate_text(self, prompt, max_tokens=1000):
        """
        调用阿里云百炼大模型生成文本
        
        Args:
            prompt (str): 输入提示词
            max_tokens (int): 最大生成token数
            
        Returns:
            str: 生成的文本
        """
        if not self.api_key:
            return "错误：未配置阿里云API密钥"
        
        headers = {
            "Authorization": f"Bearer {self.api_key}",
            "Content-Type": "application/json"
        }
        
        data = {
            "model": self.model,
            "input": {
                "prompt": prompt
            },
            "parameters": {
                "max_tokens": max_tokens,
                "temperature": 0.7,
                "top_p": 0.8
            }
        }
        
        try:
            response = requests.post(self.endpoint, headers=headers, data=json.dumps(data))
            if response.status_code == 200:
                result = response.json()
                return result['output']['text']
            else:
                return f"API调用失败，状态码：{response.status_code}"
        except Exception as e:
            return f"请求异常：{str(e)}"

    def ask_question(self, question):
        """
        针对红楼梦内容进行问答
        
        Args:
            question (str): 用户问题
            
        Returns:
            str: 回答内容
        """
        prompt = f"基于《红楼梦》的内容，回答以下问题：{question}\n请提供准确、详细的回答："
        return self.generate_text(prompt)

    def generate_hongloumeng_style_text(self, topic, length="短篇"):
        """
        生成红楼梦风格的文本
        
        Args:
            topic (str): 写作主题
            length (str): 篇幅长短
            
        Returns:
            str: 生成的文本
        """
        prompt = f"请以《红楼梦》的写作风格，创作一篇关于'{topic}'的{length}文章。要求：\n"\
                 f"1. 模仿曹雪芹的文笔风格\n"\
                 f"2. 使用古典白话文\n"\
                 f"3. 体现红楼梦的人物特点和情感描写\n\n"\
                 f"文章内容："
        return self.generate_text(prompt)

# 使用示例
if __name__ == "__main__":
    # 初始化API
    qwen = QwenAPI()
    
    # 示例：问答功能
    question = "请简述贾宝玉和林黛玉的关系"
    answer = qwen.ask_question(question)
    print(f"问题：{question}")
    print(f"回答：{answer}\n")
    
    # 示例：文本生成功能
    topic = "大观园的春景"
    generated_text = qwen.generate_hongloumeng_style_text(topic)
    print(f"主题：{topic}")
    print(f"生成文本：{generated_text}")